package req

import (
	"github.com/liangboceo/yuanboot/web/mvc"
	"time"
)

type BaseReq struct {
	ID            uint      `json:"id" `
	IsDeleted     int       `json:"isDeleted" doc:"是否删除【0：未删除 1：删除】"`
	CreateBy      int       `json:"createBy" doc:"创建人"`
	CreateOrgCode int       `json:"createOrgCode" doc:"创建组织"`
	CreateTime    time.Time `json:"createTime" doc:"创建时间"`
	UpdateBy      int       `json:"updateBy" doc:"更新人"`
	UpdateTime    time.Time `json:"updateTime" doc:"更新时间"`
	CreateName    string    `json:"createName" doc:"创建人名称"`
	UpdateName    string    `json:"updateName" doc:"更新人名称"`
}

// CacheGetRuleReq 缓存规则获取请求体
type CacheGetRuleReq struct {
	mvc.RequestBody `route:"/cache/getCacheRule" doc:"获取前台缓存规则"`
	BaseReq
	PageNum    int    `json:"pageNum" doc:"分页"`
	PageSize   int    `json:"pageSize" doc:"每页数量"`
	Url        string `json:"url" doc:"url"`
	ServerName string `json:"serverName" doc:"服务名"`
	KeyName    string `json:"keyName" doc:"缓存md5Key"`
}

// CacheGetViewReq 获取缓存访问的统计
type CacheGetViewReq struct {
	mvc.RequestBody `route:"/cache/getCacheView" doc:"获取前台缓存访问"`
	BaseReq
	PageNum    int    `json:"pageNum" doc:"分页"`
	PageSize   int    `json:"pageSize" doc:"每页数量"`
	Url        string `json:"url" doc:"url"`
	ServerName string `json:"serverName" doc:"服务名"`
	KeyName    string `json:"keyName" doc:"缓存md5Key"`
	Action     string `json:"action" doc:"行为"`
}

// CacheReq 缓存请求体
type CacheReq struct {
	mvc.RequestBody `route:"/cache/getFrontCache" doc:"获取前台缓存"`
	BaseReq
	ServerName string `json:"serverName" doc:"服务名"`
	KeyName    string `json:"keyName" doc:"缓存md5Key"`
	Url        string `json:"url" doc:"记录请求的url"`
}

// CacheSetReq 缓存设置请求体
type CacheSetReq struct {
	mvc.RequestBody `route:"/cache/setFrontCache" doc:"设置前台缓存"`
	BaseReq
	ServerName string `json:"serverName" doc:"服务名"`
	KeyName    string `json:"keyName" doc:"缓存md5Key"`
	Url        string `json:"url" doc:"缓存的链路url"`
	Value      string `json:"value" doc:"缓存的值"`
	Expire     int    `json:"expire" doc:"过期时间"`
}

// CacheSetRuleReq 缓存规则设置请求体
type CacheSetRuleReq struct {
	mvc.RequestBody `route:"/cache/setCacheRule" doc:"设置前台缓存规则"`
	BaseReq
	Url        string `json:"url" doc:"url"`
	Expire     int    `json:"expire" doc:"缓存过期时间"`
	Rule       string `json:"rule" doc:"缓存规则"`
	ServerName string `json:"serverName" doc:"服务名"`
	KeyName    string `json:"keyName" doc:"缓存md5Key"`
}

// KeyDeleteReq 缓存key 删除操作
type KeyDeleteReq struct {
	mvc.RequestBody `route:"/cache/batchDeleteKeys" doc:"批量删除redis key详情"`
	BaseReq
	Keys []string `json:"keys" doc:"keys"`
}

// KeyInfoReq 缓存key 详情访问
type KeyInfoReq struct {
	mvc.RequestBody `route:"/cache/getKeyInfo" doc:"获取redis key详情"`
	BaseReq
	Key string `json:"key" doc:"key"`
}

// KeysReq 缓存key访问
type KeysReq struct {
	mvc.RequestBody `route:"/cache/getKeys" doc:"获取redis key列表"`
	BaseReq
	PageNum  int    `json:"pageNum" doc:"分页"`
	PageSize int    `json:"pageSize" doc:"每页数量"`
	Keyword  string `json:"keyword" doc:"keyword"`
}

// SetKeysReq 设置缓存key值
type SetKeysReq struct {
	mvc.RequestBody `route:"/cache/setKeyValue" doc:"设置缓存key值"`
	BaseReq
	KeyName string `json:"keyName" doc:"keyName"`
	Expire  int    `json:"expire" doc:"过期时间"`
	Value   string `json:"value" doc:"value"`
}

// DataSourceReq 数据源请求体
type DataSourceReq struct {
	mvc.RequestBody `route:"/datasource/..." doc:"数据源请求体"`
	BaseReq
	Name      string `json:"name" doc:"名称"`
	Note      string `json:"note" doc:"备注"`
	Url       string `json:"url" doc:"URL"`
	Username  string `json:"username" doc:"用户名"`
	Password  string `json:"password" doc:"密码"`
	Type      string `json:"type" doc:"类型"`
	ClassName string `json:"className" doc:"类名"`
}

// GroupReq 分组请求体
type GroupReq struct {
	mvc.RequestBody `route:"/group/..." doc:"分组请求体"`
	BaseReq
	Name string `json:"name" doc:"名称"`
}

// UserReq 用户请求体
type UserReq struct {
	mvc.RequestBody `route:"/user/..." doc:"用户请求体"`
	BaseReq
	Username string `json:"username" doc:"用户名"`
	Password string `json:"password" doc:"密码"`
}

// ApiAuthReq API授权请求体
type ApiAuthReq struct {
	mvc.RequestBody `route:"/apiauth/..." doc:"API授权请求体"`
	BaseReq
	TokenId int `json:"tokenId" doc:"令牌ID"`
	GroupId int `json:"groupId" doc:"分组ID"`
}

// ApiConfigReq API配置请求体
type ApiConfigReq struct {
	mvc.RequestBody `route:"/apiconfig/..." doc:"API配置请求体"`
	BaseReq
	Name         string `json:"name" doc:"名称"`
	Note         string `json:"note" doc:"备注"`
	Path         string `json:"path" doc:"路径"`
	DatasourceId int    `json:"datasourceId" doc:"数据源ID"`
	Sql          string `json:"sql" doc:"SQL语句"`
	RealSql      string `json:"realSql" doc:"实际SQL语句"`
	Params       string `json:"params" doc:"参数"`
	Status       int    `json:"status" doc:"状态"`
	IsSelect     int    `json:"isSelect" doc:"是否查询"`
	Previlege    int    `json:"previlege" doc:"权限"`
	GroupId      int    `json:"groupId" doc:"分组ID"`
}

// TokenReq 令牌请求体
type TokenReq struct {
	mvc.RequestBody `route:"/token/..." doc:"令牌请求体"`
	BaseReq
	Token      string `json:"token" doc:"令牌"`
	Expire     int64  `json:"expire" doc:"过期时间"`
	Note       string `json:"note" doc:"备注"`
	CreateTime int64  `json:"createTime" doc:"创建时间"`
}
